package com.service;

/**
 * 1.代理类和目标类（LaserPrinter）里实现相同接口
 * 2.代理类应该具有一个目标类型的对象属性
 * 3.在代理类的方法中调用目标类的同名方法
 */

//代理类类似律师    律师代理出庭人
public class $ProxyPrinter implements Printer {

    private  LaserPrinter target ; //目标对象

    LogAdvice logAdvice;


    @Override
    public void print(String info, int count, String type) {
        logAdvice.before();//前置增强  切入该方法
        target.print(info,count,type);
        logAdvice.after();//后置增强

    }

    public static void main(String[] args) {
        Printer printer = new $ProxyPrinter();
        printer.print("测试",3,"A4");
    }
}

class  LogAdvice{
    public void before(){
        System.out.println("before");
    }
    public void after(){
        System.out.println("after");
    }
}
